﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web.Http;
using System.Web.Http.Cors;
using Upeu.Matricula.Api.Models;
using Upeu.Matricula.Data.Business;
using Upeu.Matricula.Data.Entities;

namespace Upeu.Matricula.Api.Controllers
{
    [EnableCors(origins: "*", headers: "*", methods: "*")]
    public class CuentaController : ApiController
    {
        // GET api/<controller>
        public IEnumerable<CuentaModel> Get()
        {
            //return new string[] { "value1", "value2" };
            return CuentaBusiness.GetListByFilter("").Select(
                t => new CuentaModel
                {
                    Cuenta_Id = t.Cuenta_Id,
                    Descripcion = t.Descripcion,
                    MontoTotal = t.MontoTotal,
                    Moneda = t.Moneda,
                    FechaVencimiento = t.FechaVencimiento,
                });
        }

        // GET api/<controller>/5
        public CuentaModel Get(Guid id)
        {
            Cuenta t = CuentaBusiness.GetById(id);
            return new CuentaModel
            {
                Cuenta_Id = t.Cuenta_Id,
                Descripcion = t.Descripcion,
                MontoTotal = t.MontoTotal,
                Moneda = t.Moneda,
                FechaVencimiento = t.FechaVencimiento,
            };
        }

        // POST api/<controller>
        public CuentaModel Post([FromBody]CuentaModel model)
        {
            Cuenta t = CuentaBusiness.Create(new Cuenta
            {
                Cuenta_Id = model.Cuenta_Id,
                Descripcion = model.Descripcion,
                MontoTotal = model.MontoTotal,
                Moneda = model.Moneda,
                FechaVencimiento = model.FechaVencimiento,
            });
            return new CuentaModel
            {
                Cuenta_Id = t.Cuenta_Id,
                Descripcion = t.Descripcion,
                MontoTotal = t.MontoTotal,
                Moneda = t.Moneda,
                FechaVencimiento = t.FechaVencimiento,
            };
        }

        // PUT api/<controller>/5
        public CuentaModel Put(Guid id, [FromBody]CuentaModel model)
        {
            Cuenta t = CuentaBusiness.Update(new Cuenta
            {
                Cuenta_Id = model.Cuenta_Id,
                Descripcion = model.Descripcion,
                MontoTotal = model.MontoTotal,
                Moneda = model.Moneda,
                FechaVencimiento = model.FechaVencimiento,
            });
            return new CuentaModel
            {
                Cuenta_Id = t.Cuenta_Id,
                Descripcion = t.Descripcion,
                MontoTotal = t.MontoTotal,
                Moneda = t.Moneda,
                FechaVencimiento = t.FechaVencimiento,
            };
        }

        // DELETE api/<controller>/5
        public void Delete(Guid id)
        {
            CuentaBusiness.Delete(id);
        }
    }
}